1. generic 
  2.    type Element is private; 
  3.    Default : Element; 
  4.  
  5. package Sync_Type is 
  6.  
  7.    protected type Protect is 
  8.       procedure Set (E : Element); 
  9.       function Get return Element; 
  10.    private 
  11.       Value : Element := Default; 
  12.    end Protect; 
  13.  
  14. end Sync_Type;